<?php
//Функции облегчающие вывод во view

//Удобной способ проставлять ссылки
function a($path, $text = FALSE) {
    $full_path = APP_URL.$path;
    
    //Красиво отображать ссылки с -, а не с _ , но для внутреннего представления лучше использвовать _
    $full_path = str_replace('_', '-', $full_path);
	
    if (!$text)
       $text = $full_path;
			
    //Если ссылка ведёт на текущую страница, то заменяем её span'ом   
    if ($full_path == Local::get('url'))
       $result = '<span class="a">'.$text.'</span>';
    else   
       $result = '<a href="'.$full_path.'">'.$text.'</a>';
        
    return $result;
}
function email($who, $name, $subject) {
    return '<a href="mailto:'.Config::get('email', $who).'?subject='.$subject.'">'.$name.'</a>';
}

function img($name) {
	return '<img src="'.BASE_URL.'upload/'.$name.'" />';	
}

function img_src($name) {
	return 'src="'.BASE_URL.'upload/'.$name.'"';
}

function b_img($name) {
	return img('b_'.$name);
}

function s_img($name) {
	return img('s_'.$name);
}

function ffile($name) {
	return '<a href="'.BASE_URL.'upload/'.$name.'">Файл</a>';
}

//Функция используется для более удобного вывода отладочной информации
function v_print($var) {
    echo '<pre>'; //Сохраняем в html переносы строк
    print_r($var);
    echo '</pre>';
}

//Полный url
function src($path = '') {
	return APP_URL.$path;	
}

function href($path = '') {
	//$path = str_replace('_', '-', $path);
    return 'href="'.APP_URL.$path.'"';   
}

//url к чему-то ещё
function url($path = '') {
	return BASE_URL.$path;
}

//Выводит значения через запятую, игнорируя пустые
function comma() {    
    $params = array_filter(params2array(func_get_args()));
    return implode(', ', $params);
}

//Аналогично предыдущему, но работает с ассоциативным массивом
function comma_asoc($array, $property) {
    if(!isset($array)) return '';
    
    $last_param = array_pop($array);
    $result = '';
    foreach ($array as $el) {
       $result .= $el[$property].', ';  
    }
    $result .= $last_param[$property];
    return $result;
}


//Отмечает radio-button
function checked($expression) {
    if ($expression)
       return 'checked="checked"';
    return '';
}

//Проставляет класс в случае выполнения условия
function classed($class, $condition = TRUE) {
    return ($condition)? 'class="'.$class.'" ' : '';
}


/*function renderTree(&$object, $level, &$res, $padding, $is_leaves = FALSE) {
    rT(&$object, $level, &$res, $padding, $is_leaves, TRUE);
}*/


//Рекурсивно строит дерево
function renderTree(&$object, $level, &$res, $padding, $is_leaves = FALSE, $add_new = TRUE) {
            
    if($level > 0) {
        
        $numCh = sizeof($object['subitems']);
        
        $res .= '<div id="drag_'.$object['id'].'" style="padding-left:'.$padding*($level > 1 ? 1 : 0).'px">';
        $res .= '<a id="exp_'.$object['id'].'" class="ui-icon ui-icon-triangle-1-se " '.(!$numCh ? 'style="visibility:hidden; display:inline-block"' : 'style="display:inline-block"').'></a>';
        $res .= '<a style="display:inline-block" class="dr ui-icon ui-icon-arrowthick-2-n-s"></a>';
        $res .= '<a style="display:inline-block" id="item_'.$object['id'].'" class="action" href="#'.$object['id'].'">'.$object['title'].'</a>';
        
		if ($add_new) {
		    $res .= '<a style="display:inline-block" id="add_item_'.$object['id'].'" class="ui-icon ui-icon-plus"></a>';
		}
		if ($is_leaves && $object['leaf_class']) {
		  $res .= '<a style="display:inline-block" id="lleaf_'.$object['id'].'" href="#'.$object['id'].',0" class="leaves ui-icon ui-icon-cart"></a>';
		}
         
    }
    
    $res .= '<div id="sortable_'.$object['id'].'">';
    
    if(isset($object['subitems']))
        foreach($object['subitems'] as $subItem) 
            renderTree($subItem, $level + 1, $res, $padding, $is_leaves, $add_new);
    
    $res .= '</div>';
        
    $res .= '</div>';
    
    return $res;
}

//Ещё один вариант построения дерева
function simpleRenderTree(&$object, $level, &$res, $max_level = 0) {
	if ($level > $max_level && $max_level != 0)
	   return $res;
   
    $res .= '<div>'.a($object['url'],$object['title']);

    $res .= '<div>';
	
	if(isset($object['subitems']))
        foreach($object['subitems'] as $subItem) 
            simpleRenderTree($subItem, $level + 1, $res, $max_level);
	
	$res .= '</div>';    

	$res .= '</div>';
        
    return $res;
}

//Генерируем url для древовидных данных
function renderUrlTree(&$object, $level, &$segments) {
	$result = $object;
	$segments[$level] = $object['idn'];
	
	$url = '';
	//print_r($segments); 
	for ($i=0; $i <= $level; $i++) {
		
		$url .= $segments[$i].'/'; 
	}
	$result['url'] = trim($url, '/');
	
	
	    
    if(isset($object['subitems']))
        foreach($object['subitems'] as $key=>$subItem) 
            $result['subitems'][$key] = renderUrlTree($subItem, $level + 1, $segments);
			
	return $result;
}

?>